<?php

namespace app\index\controller;

class User
{
	//增删改查方法模板

	//插入一条数据
	public function insert_user()
	{

		if (!isset($_POST['username']) || !isset($_POST['phone']) || !isset($_POST['password']) ||  !isset($_POST['authority'])) {
			$return_data = array();
			$return_data['error_code'] = 2;
			$return_data['msg'] = '参数缺省，请检查';
			return json($return_data);
		}

		//实例化数据表
		$user = db('user');

		//构造插入的数据
		$data = array();
		$data['username'] = $_POST['username'];
		$data['phone'] = md5($_POST['phone']);
		$data['password'] = $_POST['password'];
		$data['authority'] = $_POST['authority'];

		//先查询数据库有没有相同的手机号
		$where = array();
		$where['phone'] = $data['phone'];
		$res = $user->where($where)->find();


		if ($res) {
			//构造返回数据
			$return_data = array();
			$return_data['error_code'] = 1;
			$return_data['msg'] = '插入失败，手机号已存在';
			return json($return_data);
		} else {
			$user->insert($data);
			//构造返回数据
			$return_data = array();
			$return_data['error_code'] = 0;
			$return_data['msg'] = '插入成功';
			return json($return_data);
		}
	}

	//显示全部用户权限
	//查多条数据：select操作
	public function select_user()
	{
		//实例化数据表
		$user = db('user');

		//执行查询操作
		// $all_users = $user->where($where)->select();

		//执行查询操作，field方法可以设定查询操作返回什么字段
		//比如我们实际场景是不可能会告诉前端用户密码的
		//特别注意field方法的参数的写法！
		$all_users = $user->field('username,authority')->select();
		array_shift($all_users);
		//打印
		// var_dump($all_users);
		// var_dump($user->getLastSql());

		//返回数据
		if ($all_users) {
			$return_data = array();
			$return_data['error_code'] = 0;
			$return_data['msg'] = '查询成功';
			$return_data['users'] = $all_users;
			return json($return_data);
		} else {
			$return_data = array();
			$return_data['error_code'] = 1;
			$return_data['msg'] = '哥哥查不到数据哇~';
			return json($return_data);
		}
	}

	//登录
	//查一条数据：find操作
	public function find_user()
	{
		if (!isset($_POST['phone']) || !isset($_POST['password'])) {
			$return_data = array();
			$return_data['error_code'] = 2;
			$return_data['msg'] = '参数缺省，请检查';
			return json($return_data);
		}

		//实例化数据表
		$user = db('user');

		//构造查询语句
		$where = array();
		$where['phone'] = md5($_POST['phone']);
		$where['password'] = $_POST['password'];

		//执行查询操作
		// $only_user = $user->where($where)->find();

		//执行查询操作,field方法可以设定查询操作返回什么字段
		//比如我们实际场景是不可能会告诉前端用户密码的
		//特别注意field方法的参数的写法！
		$only_user = $user->where($where)->field('username,phone')->find();

		//打印
		// var_dump($only_user);
		// var_dump($user->getLastSql());


		//返回数据
		if ($only_user) {
			$return_data = array();
			$return_data['error_code'] = 0;
			$return_data['msg'] = '登录成功';
			$return_data['username'] = $only_user['username'];
			$return_data['phone'] = $only_user['phone'];
			return json($return_data);
		} else {
			$return_data = array();
			$return_data['error_code'] = 1;
			$return_data['msg'] = '用户名或密码不正确';
			return json($return_data);
		}
	}

	//修改数据:update操作
	//这里举例子：根据手机号（唯一标识）,修改用户名
	public function update_authority()
	{
		if (!isset($_POST['username'])) {
			$return_data['error_code'] = 2;
			$return_data['msg'] = '参数缺省，请检查';
			return json($return_data);
		}

		//实例化数据表
		$user = db('user');

		//设置要查询的条件
		$where = array();
		$where['username'] = $_POST['username'];

		//构造要修改的数据
		$data = array();
		$data['authority'] = $_POST['authority'];

		//执行修改操作
		//用$result接收操作的返回值
		//修改成功会返回数据条数（int类型)
		//修改失败或者不需要修改，则返回0
		$result = $user->where($where)->update($data);


		//打印看看
		// var_dump($result);

		//因为$result只有数字，我们要告诉前端我们操作成功了
		//如果修改成功
		if ($result) {
			//构造返回数据
			$return_data = array();
			$return_data['error_code'] = 0;
			$return_data['msg'] = '修改成功！';
			return json($return_data);
		} else {
			//构造返回数据
			$return_data = array();
			$return_data['error_code'] = 1;
			$return_data['msg'] = '修改失败！';
			return json($return_data);
		}
	}

	//删除数据
	public function delete_user()
	{
		if (!isset($_POST['username'])) {
			$return_data = array();
			$return_data['error_code'] = 2;
			$return_data['msg'] = '参数缺省，请检查';
			return json($return_data);
		}

		//实例化数据表
		$user = db('user');

		//构造删除条件
		$where1 = array();
		$where1['username'] = $_POST['username'];

		//执行删除操作
		//用$result接收操作的返回值
		//删除成功会返回删除的条数（int类型)
		//删除失败或者找不到删除的数据，则返回0
		$result = $user->where($where1)->delete();


		//因为$result只有数字，我们要告诉前端我们操作成功了
		//如果删除成功
		if ($result) {
			//构造返回前端的数据
			$return_data = array();
			$return_data['error_code'] = 0;
			$return_data['msg'] = '注销成功';
			return json($return_data);
		} else {
			//构造返回前端的数据
			$return_data = array();
			$return_data['error_code'] = 1;
			$return_data['msg'] = '注销失败';
			return json($return_data);
		}
	}


	// 最高权限校验
	public function topadminCheck()
	{
		//提前声明返回数据
		$return_data = array();

		//参数校验
		if (!isset($_POST['toppassword'])) {
			$return_data['error_code'] = 2;
			$return_data['msg'] = '参数缺省，请检查';
			return json($return_data);
		}

		//实例化数据表
		$user = db('user');

		//构造查询条件
		$where = array();
		$where['username'] = 'topadmin';
		$where['password'] = $_POST['toppassword'];

		//执行查询操作
		$res = $user->where($where)->find();

		if ($res) {
			$return_data['error_code'] = 0;
			$return_data['msg'] = '校验成功';
		} else {
			$return_data['error_code'] = 1;
			$return_data['msg'] = '最高权限密码错误';
		}
		return json($return_data);
	}

	// 校验是否是admin权限
	public function adminCheck()
	{
		$return_data = array();
		if (!isset($_POST['phone'])) {
			$return_data['error_code'] = 2;
			$return_data['msg'] = '参数缺省,请检查';
			return json($return_data);
		}
		$user = db("user");
		$where = array();
		$where['phone'] = $_POST['phone'];
		$where['authority'] = "admin";
		$result = $user->where($where)->find();
		if ($result) {
			$return_data['error_code'] = 0;
			$return_data['msg'] = "管理员:" . $result['username'] . ",您好";
		} else {
			$return_data['error_code'] = 1;
			$return_data['msg'] = "校验不通过，您不是管理员";
		}
		return json($return_data);
	}

	// 根据字段和具体值查询数据
	public function selectAccordingToKeyValue()
	{
		$return_data = array();

		if (!isset($_POST['key']) || !isset($_POST['value'])) {
			$return_data['error_code'] = 2;
			$return_data['msg'] = "参数缺省，请检查";
		}
		$key = $_POST['key'];
		$value = $_POST['value'];
		$user = db("user");
		$where = array();
		$where[$key] = $value;
		$result = $user->where($where)->select();
		if ($result) {
			$return_data['error_code'] = 0;
			$return_data['msg'] = "查询成功";
			$return_data['length']=sizeof($result);
		} else {
			$return_data['error_code'] = 1;
			$return_data['msg'] = "查询无结果";
		}
		return json($return_data);
	}
}
